
// fs模块 可用于读取目录上的文件/文件夹 => 增删该查(文件/文件夹) => 默认都是异步操作(可以以同步形式读取)

// 异步和同步  读取 新增 删除 文件和文件夹

var path = require("path");
var fs = require("fs");
// console.log(fs);  

// 文件读取
// path.join(__dirname, "../data/1.txt")  => 相对于当前文件查找目标文件

// 异步写法
// fs.readFile(path.join(__dirname, "../data/1.txt"), "utf-8", function (err, data) {
//     if (err) throw err;
//     console.log("读取成功:异步", data);
// })

// var data = fs.readFileSync(path.join(__dirname, "../data/1.txt"), "utf-8");
// console.log("读取成功:同步", data);


// 写入文件(也可以新增文件 => 没有就新增)
// fs.writeFile(path.join(__dirname, "../data/1.txt"), "我爱学习,我爱node", {
//     encoding: "utf-8",// 编码
//     flag: "w",  // 以什么形式写入数据(默认"w")  w  a
// }, function (err) {
//     if (err) throw err;
//     console.log("写入成功");
// })

// 以追加形式写入文件 flag="a"
// fs.appendFile(path.join(__dirname, "../data/1.txt"), "我爱学习,我爱node", {
//     encoding: "utf-8",
//     // flag:"a",  // 默认"a"
// }, function (err) {
//     if (err) throw err;
//     console.log("写入成功");
// })

// fs.unlink(url,callback)  => 有就删除 没有就报错
// fs.unlink(path.join(__dirname, "../data/1.txt"), function (err) {
//     if (err) throw err;
//     console.log("删除成功");
// })


// 文件夹

// 文件夹读取 (directory => 文件夹)
// __dirname 当前文件所在的目录
// fs.readdir(path.join(__dirname), function (err, list) {
//     if (err) throw err;
//     console.log("读取成功", list);
// })

// fs.readdir(path.join(__dirname, "../data"), function (err, list) {
//     if (err) throw err;
//     console.log("读取成功", list);
// })

// 新增文件夹  (没有就新增 => 有就报错(新增之前判断文件是否存在))
// fs.mkdir(path.join(__dirname, "../data/1111"), function (err) {
//     if (err) throw err;
//     console.log("新增成功");
// })

// 删除文件夹 (有就删除 => 没有就报错)
// fs.rmdir(path.join(__dirname, "../data/1111"), function (err) {
//     if (err) throw err;
//     console.log("删除成功");
// })

// 每次操作文件/文件夹之前 => 判断文件/文件夹是否存在
// fs.exists(path.join(__dirname, "../data/1111"), function (result) {
//     console.log(result);
// })

// console.log(fs.existsSync(path.join(__dirname, "../data/1111")));
// console.log(fs.existsSync(path.join(__dirname, "../data/1.txt")));

// fs.rename(oldUrl , newUrl , callback) 修改文件名/目录名   (注:当新的路径和旧的路径不相同时,则会移动文件;)

// fs.rename(path.join(__dirname, "../data/1111"), path.join(__dirname, "../data/2222"), function (err) {
//     if (err) throw err;
//     console.log("修改成功");
// })

// .stat(url , callback) 获取文件/目录的相关信息
//     url  为需要获取信息的文件/目录 的路径
//     callback  为读取完毕后的回调函数
//         第一个形参error为读取失败时的错误信息
//         第二个形参info  为读取成功时的相关信息对象
//             该info对象下有两个方法    
//                 isFile() 方法用来判断是否为文件
//                 isDirectory() 方法用来判断是否为目录
//                 isBlockDevice()	如果是块设备返回 true，否则返回 false。
//                 isCharacterDevice()	如果是字符设备返回 true，否则返回 false。
//                 isSymbolicLink()	如果是软链接返回 true，否则返回 false。
//                 isFIFO()	如果是FIFO，返回true，否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
//                 isSocket()	如果是 Socket 返回 true，否则返回 false。

fs.stat(path.join(__dirname, "../data/2222"), function (err, info) {
    if (err) throw err;
    console.log(info.isDirectory());
})

fs.stat(path.join(__dirname, "../data/1.txt"), function (err, info) {
    if (err) throw err;
    console.log(info.isFile());
})









